# 浮点二分（也称为实数二分）是用于在实数区间内查找满足特定条件的值的一种算法。
# 此代码是浮点二分算法的一个模板示例，这里用于查找满足某个条件的实数。
# 具体来说，该示例是在查找平方小于等于 2 的最大实数，即近似求解根号 2 的值。

# 初始化二分查找的左右边界
# left 为左边界，初始值设为 1
# right 为右边界，初始值设为 2
# 我们要查找的值在这个区间 [1, 2] 内
left, right = 1, 2

# esp 是一个精度控制变量
# 它用于控制二分查找结束的条件，其值越小，查找结果就越精确
# 这里将精度设置为 1e-6，意味着当左右边界的差值小于 1e-6 时，二分查找停止
esp = 1e-6

# 开始二分查找的循环，只要右边界和左边界的差值大于精度要求，就继续循环
while right - left > esp:
    # 计算当前区间的中间值
    # 通过 (left + right) / 2 得到中间值 mid
    mid = (left + right) / 2

    # 检查中间值的平方是否大于 2
    if mid ** 2 > 2:
        # 如果中间值的平方大于 2，说明满足条件的值在左半区间
        # 因此将右边界更新为中间值 mid
        right = mid
    else:
        # 如果中间值的平方小于等于 2，说明满足条件的值在右半区间
        # 因此将左边界更新为中间值 mid
        left = mid

    # 打印当前的左右边界，用于调试查看二分查找的过程
    print(left, right)